package com.jichaoyun.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jichaoyun.common.model.Result;
import com.jichaoyun.model.entity.Role;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jichaoyun.model.vo.RoleIdName;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author zhangzhen
 * @since 2023-11-03
 */
public interface IRoleService extends IService<Role> {

    /**
     * 新增角色
     * @param role
     * @return
     */
    Result<Object> addRole(Role role);

    /**
     * 获取角色列表
     * @param pageNo
     * @param pageSize
     * @return
     */
    IPage<Role> getRoleList(Long pageNo, Long pageSize);

    /**
     * 获取角色列表
     * @return
     */
    List<Role> getRoleList();

    /**
     * 更新角色状态
     * @param roleId
     * @return
     */
    Result<Object> updateStatus(Integer roleId);

    /**
     * 查询所有角色Id和名称
     * @return
     */
    List<RoleIdName> getAllRoleIdName();


    /**
     * 获取该角色的用户数量
     * @param roleId
     * @return
     */
    int getRoleNum(Integer roleId);

    /**
     * 根据Id获取角色
     * @param roleId
     * @return
     */
    Role getRoleById(Integer roleId);

    /**
     * 修改角色信息及权限
     * @param role
     */
    void updateRole(Role role);

    /**
     * 删除角色及其对应权限
     * @param id
     */
    void deleteRoleById(Integer id);
}
